﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SAAC.DTO;
using SAAC.DAL;

namespace SAAC.BLL
{
    public class ProcessoBLL
    {
        protected ProcessoDAL _processoDAL;

        public ProcessoBLL()
        {
            if (_processoDAL == null)
                _processoDAL = new ProcessoDAL();
        }

        public ProcessoDTO Select(ProcessoDTO dto, string order = null)
        {
            try
            {
                return _processoDAL.Select(dto, order);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public List<ProcessoDTO> SelectAll(ProcessoDTO dto, string order = null, int limit = 1000)
        {
            try
            {
                return _processoDAL.SelectAll(dto, order, limit);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void Insert(ProcessoDTO dto)
        {
            try
            {
                _processoDAL.Insert(dto);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void Update(ProcessoDTO dto)
        {
            try
            {
                _processoDAL.Update(dto);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void Delete(ProcessoDTO dto)
        {
            try
            {
                _processoDAL.Delete(dto);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public List<ProcessoDTO> SelectAllChild(ProcessoDTO dto, string order = null, int limit = 1000)
        {
            var listaProcessos = new List<ProcessoDTO>();
            var dtoColegiado = new ColegiadoDTO();
            var bllColegiado = new ColegiadoBLL();

            try
            {
                listaProcessos = _processoDAL.SelectAll(dto, order, limit);

                foreach (var item in listaProcessos)
                {
                    dtoColegiado.Id = item.Colegiado.Id;
                    dtoColegiado = bllColegiado.Select(dtoColegiado);
                    item.Colegiado = dtoColegiado;
                }

                return listaProcessos;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }



    }
}
